package com.captain.leetcode2.链表;

import com.captain.leetcode.链表.ListNode;

/**
 * 给定一个链表，判断链表中是否有环。
 * <p>
 * 如果链表中有某个节点，可以通过连续跟踪 next 指针再次到达，则链表中存在环。
 * 为了表示给定链表中的环，我们使用整数 pos
 * 来表示链表尾连接到链表中的位置（索引从 0 开始）。
 * 如果 pos 是 -1，则在该链表中没有环。注意：pos 不作为参数进行传递，仅仅是为了标识链表的实际情况。
 */
public class 环形链表141 {

    public boolean hasCycle(ListNode head) {
        //快慢指针
        if (head == null || head.next == null) return false;
        ListNode fast = head.next;
        ListNode slow = head;

        while (fast != slow) {
            //如果没有环 , 那么fast先到null
            if (fast == null || fast.next == null) return false;
            fast = fast.next.next;
            slow = slow.next;

        }
        return true;
    }
}
